home *** CD-ROM | disk | FTP | other *** search
/ Resource for Source: C/C++ / Resource for Source - C-C++.iso / codelib6 / v_08_11 / 8n11075a < prev    next >
Text File  |  1995-11-01  |  1KB  |  60 lines

  1. /****************** LISTING 4 - client.c  ******************/
  2.  
  3. #include "ipc.h"
  4.  
  5. extern  RCVBUF msgque[QSIZE];
  6. extern  BOOL qfull, qempty, qovrflo;
  7. extern  int qtail, qhead;
  8.  
  9. main()
  10. {
  11. int     i, process_num, status;
  12. char    mbxname[16];
  13. MSGBUF  msgbuf;
  14. USHORT  rcvmbx, xmtmbx;
  15.  
  16. /*++++++++++++ Startup ++++++++++++*/
  17.  
  18. status = get_process_no(&process_num);
  19. sprintf(mbxname, "CLIENTMBX%d", process_num);
  20. status = open_comm_link(&rcvmbx,
  21.                 sizeof(MSGBUF),mbxname);
  22. status = open_comm_link(&xmtmbx,
  23.                 sizeof(MSGBUF),"SERVERMBX");
  24. status = SYS$DCLAST(&receive, rcvmbx, PSL$C_SUPER);
  25.  
  26. msgbuf.xmt_prcnum = 0;
  27. msgbuf.msgtyp = ADDMBX;
  28. send(xmtmbx, &msgbuf, sizeof(MSGBUF));
  29.  
  30. /*++++++++++ Main loop ++++++++++*/
  31.  
  32. FOREVER {
  33.   status = SYS$WAITFR(RCVEF);
  34.   status = SYS$CLREF(RCVEF);
  35.   while (!qempty) { 
  36.     dequeue(&msgbuf);
  37.     switch(msgbuf.msgtyp) {
  38.  
  39.       case INT_ARRAY:
  40.           for (i=0; i < 100; i++)
  41.               printf("\n%d", msgbuf.msg.array[i]);
  42.           break;
  43.  
  44.       case TEXT:
  45.           printf("%s", msgbuf.msg.text);
  46.           break;
  47.  
  48.       case SHUTDOWN:
  49.           close_comm_link(rcvmbx);
  50.           close_comm_link(xmtmbx);
  51.           exit(SUCCEED);
  52.           break;
  53.          
  54.       default:
  55.           break;
  56.     } 
  57.   }
  58. }  
  59.